class Solution {
  public:
    /**
     * 代码中的类名、方法名、参数名已经指定，请勿修改，直接返回方法规定的值即可
     *
     *
     * @param s string字符串 第一个整数
     * @param t string字符串 第二个整数
     * @return string字符串
     */
    string solve(string s, string t) {
        // write code here
        if (s.size() == 0 || t.size() == 0 || s[0] == '0' || t[0] == '0')
            return "0";
        

        // 先逆序
        string ret;
        reverse(s.begin(), s.end());
        reverse(t.begin(), t.end());
        int m = s.size(), n = t.size();
        int* tmp = new int[m + n - 1] {0};  // 创建一个临时数组，数组大小就是两个字符串的总个数 - 1
        // 无进位相乘然后相加，最后处理进位
        for (int i = 0; i < m; i++)
            for (int j = 0; j < n; j++)
                tmp[i + j] += (s[i] - '0') * (t[j] - '0');

        // 处理进位
        int plus = 0;
        for (int i = 0; i < m + n - 1; i++) {
            plus += tmp[i];
            ret += plus % 10 + '0';
            plus /= 10;
        }

        if (plus > 0)  // t 里面还有数
            ret += plus % 10 + '0';
        delete[] tmp;
        reverse(ret.begin(), ret.end());
        return ret;
    }
};